/*
 * @Descripttion: 通用线程库，还未完善仅仅提供简单线程创建
 * @version: v1.0
 * @Author: Yaodecheng
 * @Date: 2019-10-19 10:32:13
 * @LastEditors: Yaodecheng
 * @LastEditTime: 2020-04-29 14:05:34
 */
#pragma once
#ifndef THREAD_BASE_H
#define THREAD_BASE_H

#ifdef _WIN32
#include <Windows.h>
#else
#include <pthread.h>
#endif
#include <stdio.h>
#include <sys/types.h>
#include "mutexlock.hpp"
// #include "boost/bind.hpp"
/*
   函数名称：  ThreadBase
   主要功能：  安全简单地创建线程函数，解决了线程创建时使用不规范导致的内存泄漏问题
			  统一windows端和linux系统接口，为了方便移植线程函数
   传入参数：  void *(*RunFun)(void *);//线程运行函数
   返回值  ：  无
*/
typedef void *(*RunFun)(void *); //线程运行函数
class ThreadBase
{

public:
	ThreadBase(RunFun, void *);
	~ThreadBase();
private:
#ifdef _WIN32
	static DWORD WINAPI threadfun(void *);
	HANDLE m_Thandle;
#else
	pthread_t m_recvThread;
	static void *threadfun(void *);
#endif
	RunFun m_fun;
	void *m_context;
	MutexLock m_pLock;
};

#endif